import {defineConfig,UserConfigExport, ConfigEnv,loadEnv} from 'vite'
import vue from '@vitejs/plugin-vue'
import prismjs from "vite-plugin-prismjs";
import {resolve} from 'path'
// import AutoImport from 'unplugin-auto-import/vite'
// import Components from 'unplugin-vue-components/vite'
// import {ElementPlusResolver} from 'unplugin-vue-components/resolvers'
import {configSvgIconsPlugin} from './src/plugins/configSvgIconsPlugin'
import {wrapperEnv} from "./src/util/evn";
import {configMockPlugin} from "./src/plugins/configMockPlugin";
// https://vitejs.dev/config/
export default ({command,mode}: ConfigEnv): UserConfigExport => {
    const root = process.cwd()
    const env = loadEnv(mode, root)
    const viteEnv = wrapperEnv(env)
    const {
        VITE_PORT,
        VITE_USE_MOCK,
    } = viteEnv
    return defineConfig({
        base: "./",
        plugins: [
            vue(),
            prismjs({
                languages: ["json", "js"],
                //  languages: 'all',
                plugins: ["line-numbers"], //配置显示行号插件
                theme: "solarizedlight", //主题名称
                css: true,
            }),
            //自动引入element-plus
            // AutoImport({
            //     resolvers: [ElementPlusResolver()],
            // }),
            // Components({
            //     resolvers: [ElementPlusResolver()],
            // }),
            configSvgIconsPlugin(), /* svg 处理 */
            //引入mock
            configMockPlugin(VITE_USE_MOCK)
        ],
        // 路径代理
        resolve: {
            alias: {
                '@': resolve('src'),
            },
            extensions: ['.js', '.ts', '.vue', '.scss', '*']
        },
        //打包配置
        build: {
            target: 'modules',//设置最终构建的浏览器兼容目标。默认值是一个 Vite 特有的值——'modules'，这是指 支持原生 ES 模块的浏览器。
            outDir: 'modules-iframe', //指定输出路径
            minify: 'terser',//混淆器，terser构建后文件体积更小
            // terserOptions: {
            //     compress: {
            //         //生产环境时去除console.log
            //         drop_console: true,
            //         drop_debugger: true
            //     }
            // },
            //打包输出文件夹的配置
            rollupOptions: {
                output: {
                    chunkFileNames: 'js/[name]-[hash].js',
                    entryFileNames: 'js/[name]-[hash].js',
                    assetFileNames: '[ext]/[name]-[hash].[ext]'
                }
            }
        },
        server: {
            // 指定服务器应该监听哪个 IP 地址。 如果将此设置为 0.0.0.0 或者 true 将监听所有地址，包括局域网和公网地址。
            host:true,
            // 端口号
            port:VITE_PORT,
            // 设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口。
            strictPort:true,
            //服务器启动时自动在浏览器中打开应用程序,当此值为字符串时，会被用作 URL 的路径名
            open: false,
            //跨域问题
            proxy: {
                '^/iframe': {
                    target: 'http://172.11.215.57/dbscale/#/login',
                    changeOrigin: true,
                    rewrite: (path) => path.replace(/^\/iframe/, '')
                }
            }
        },
        css:{
            preprocessorOptions: {
                scss: {
                    charset: false
                }
            }
        }
    })
}
